<?php

require_once 'classes/Permission.php';
require_once 'SCinterface.php';
require_once 'classes/Message.php';
require_once '../config/config.php';

class SCpermission {
    
    private $db;
    
    /**
     *Contructeur créant l'objet pour la connexion à la DB 
     */
    public function __construct() {
        $this->db = new PDO(ACA_DB_DSN, ACA_DB_USER, ACA_DB_PASS);
        $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        
    }
    
    /**
     * Ajoute une Permission
     * @param unePermission une Permission à ajouter
     * @return Message
     */
    public function ajouter($unePermission) {
        try {
            $query = $this->db->prepare("INSERT INTO permission ".
                "(nom) VALUES (:nom)");
            $query->execute(array(
                'nom'       => $unePermission->getNom()
            ));

            $query->closeCursor();
        }
        catch(PDOException $e) {
            return new Message("Permission non ajouté: ".$e->getMessage());
        }
        return $unePermission;
    }
    
    /**
     * Modifie une Permission
     * @param unePermission une Permission à modifier
     * @return Message
     */
    public function modifier($unePermission, $nvPermission) {
        try {
            $query = "UPDATE permission SET
                nom = '".$nvPermission->getNom()."'
                    WHERE nom ='".$unePermission->getNom()."';";
            $this->db->query($query);

        }
        catch(PDOException $e) {
            return new Message("Permission non modifié: ".$e->getMessage());
        }
        return $nvPermission;
    }
    
    /**
     * Supprime une Permission
     * @param unePermission une Permission à supprimer
     * @return Message
     */
    public function supprimer($unePermission) {
        try {
            $query = "DELETE FROM permission WHERE nom = '" .$unePermission. "';";
            $this->db->exec($query);
            $message = new Message("Permission supprimé");
        }
        catch(PDOException $e) {
            $message = new Message("Permission non supprimé: ".$e->getMessage());
        }
        return $message;
    }
    
    /** TODO
     * @param unePermission Permission de recherche sous forme d'objet Permission
     * @return un tableau d'objet Permission
     */
    public function lister($unePermission) {
        try {
            $query = "SELECT * FROM permission ";
            $query_where = "WHERE";
            if($unePermission!=NULL) {
                if ($unePermission->getNom() != NULL) {
                    $query_where .=" nom = '".$unePermission->getNom()."'";
                    $query.=$query_where;
                }
            }
          
            
            $lesPermissionsTrouves = null;
            $unePermissionLu = null;
            $result=$this->db->query($query);
            
            while($row=$result->fetch()) {
                $unePermissionLu = new Permission($row["nom"]);
                $lesPermissionsTrouves[] = $unePermissionLu;
            }
        }
        catch(PDOException $e) {
            print($e->getMessage());
            
        }
        return $lesPermissionsTrouves;
    }
    

        public function checkPermission($permission, $username){
        try{
            $db= new PDO(ACA_DB_DSN, ACA_DB_USER, ACA_DB_PASS,array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION), array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));

            $usernameTrouve = false;
            $sql="SELECT permission_nom FROM groupetopermission  
                INNER JOIN groupe ON 
                groupetopermission.groupe_nom=groupe.nom
                INNER JOIN comptetogroupe ON groupe.nom=comptetogroupe.groupe_nom
                WHERE comptetogroupe.compte_username='".$username."';";


            $row = $this->db->query($sql)->fetch();
            if($row[0]==$permission){
                $usernameTrouve = true;

            }

        }
        catch(PDOException $e) {
            print($e->getMessage());
            $usernameTrouve=false;
        }
        return $usernameTrouve;
    }
    
    
    
    }

?>
